self.values.get_or_try_init(|| self.load_values())
}
+ pub fn set_values(&self, values: HashMap<String, ConfigValue>) -> CargoResult<()> {
+ if self.values.borrow().is_some() {
+ return Err(human("Config values already found"));
+ }
+ match self.values.fill(values) {
+ Ok(()) => Ok(()),
+ Err(_) => Err(human("Could not fill values")),
+ }
+ }
+
pub fn cwd(&self) -> &Path { &self.cwd }
pub fn target_dir(&self) -> CargoResult<Option<Filesystem>> {
!self.frozen.get() && !self.locked.get()
}
- fn load_values(&self) -> CargoResult<HashMap<String, ConfigValue>> {
+ pub fn load_values(&self) -> CargoResult<HashMap<String, ConfigValue>> {
let mut cfg = CV::Table(HashMap::new(), PathBuf::from("."));
walk_tree(&self.cwd, |mut file, path| {
pub use self::cfg::{Cfg, CfgExpr};
-pub use self::config::{Config, homedir};
+pub use self::config::{Config, ConfigValue, homedir};
pub use self::dependency_queue::{DependencyQueue, Fresh, Dirty, Freshness};
pub use self::errors::{CargoResult, CargoError, Test, ChainError, CliResult};
pub use self::errors::{CliError, ProcessError, CargoTestError};